.TH std::chrono::high_resolution_clock 3 "2024.06.10" "http://cppreference.com" "C++ Standard Libary"
.SH NAME
std::chrono::high_resolution_clock \- std::chrono::high_resolution_clock

.SH Synopsis
   Defined in header <chrono>
   class high_resolution_clock;  \fI(since C++11)\fP

   Class std::chrono::high_resolution_clock represents the clock with the smallest tick
   period provided by the implementation. It may be an alias of
   std::chrono::system_clock or std::chrono::steady_clock, or a third, independent
   clock.

   std::chrono::high_resolution_clock meets the requirements of TrivialClock.

.SH Member types

   Member type Definition
   rep         arithmetic type representing the number of ticks in the clock's duration
   period      a std::ratio type representing the tick period of the clock, in seconds
   duration    std::chrono::duration<rep, period>
   time_point  std::chrono::time_point<std::chrono::high_resolution_clock>

.SH Member constants

                            true if the time between ticks is always constant, i.e.
   constexpr bool is_steady calls to now() return values that increase monotonically
   \fB[static]\fP                 even in case of some external clock adjustment, otherwise
                            false
                            \fI(public static member constant)\fP

.SH Member functions

   now      returns a std::chrono::time_point representing the current value of the
   \fB[static]\fP clock
            \fI(public static member function)\fP

.SH Notes

   There has been some controversy around the use of high_resolution_clock. Howard
   Hinnant, who claims to have introduced high_resolution_clock to the language, stated
   in 2016 on the ISO C++ Standard - Discussion mailing list that he was in favor of
   deprecating it. His rationale was that, because the standard allows for it to be an
   alias for std::chrono::steady_clock or std::chrono::system_clock, its use adds
   uncertainty to a program without benefit. However, other participants in the thread
   spoke out its favor, for instance on the basis that, because neither
   std::chrono::steady_clock nor std::chrono::system_clock come with any particular
   resolution guarantees, high_resolution_clock serves a useful role by giving the
   vendor an opportunity to supply the platform's highest-resolution clock, when
   neither its std::chrono::steady_clock nor its std::chrono::system_clock would be
   that.

   It is often just an alias for std::chrono::steady_clock or
   std::chrono::system_clock, but which one it is depends on the library or
   configuration. When it is a system_clock, it is not monotonic (e.g., the time can go
   backwards). For example, as of 2023, libstdc++ has it aliased to system_clock "until
   higher-than-nanosecond definitions become feasible"^[1], MSVC has it as
   steady_clock^[2], and libc++ uses steady_clock when the C++ standard library
   implementation supports a monotonic clock and system_clock otherwise^[3].

.SH See also

   system_clock wall clock time from the system-wide realtime clock
   \fI(C++11)\fP      \fI(class)\fP
   steady_clock monotonic clock that will never be adjusted
   \fI(C++11)\fP      \fI(class)\fP

.SH External links


    1. ↑ libstdc++ <chrono.h>
    2. ↑ msvc high_resolution_clock
    3. ↑ libc++ <high_resolution_clock.h>
